package com.vj.router.server.util;

import java.util.concurrent.ConcurrentHashMap;

public class GatewayRegistryMapCacheUtil {

    // 存储登录设备 ID 与 网关ID 的映射关系
    //----------------------------
    //gateway_id   |   registry_id
    //----------------------------
    //gateway01   |   172.26.10.100:10808
    //gateway02   |   172.26.10.200:10808
    private static final ConcurrentHashMap<String, String> GatewayRegistryMap = new ConcurrentHashMap<>();

    // 更新gatewayId 与 registryId 关系
    public static void putGatewayIdToRegistry(String gatewayId,String registryId) {
//        // 查找当前设备是否已经绑定到其他通道
//        Channel existingDeviceGatewayCache = DeviceGatewayMap.get(deviceId);
//
//        // 如果设备已经绑定到不同的通道，关闭旧的通道
//        if (existingDeviceGatewayCache != null && !existingDeviceGatewayCache.id().asShortText().equals(channel.id().asShortText())) {
//            closeOldChannel(existingDeviceGatewayCache);
//        }

        // 更新gatewayId 与 registryId 关系
        bindGatewayIdToRegistry(gatewayId, registryId);
    }


    // 绑定gatewayId 与 registryId 关系的方法
    private static void bindGatewayIdToRegistry(String gatewayId, String registryId) {
        // 存储当前gatewayId 和 registryId 的映射关系
        GatewayRegistryMap.put(gatewayId, registryId);
    }

    // 根据gatewayId 获取对应的 registryId
    public static String getGatewayIdToRegistry(String gatewayId) {
        return GatewayRegistryMap.get(gatewayId);
    }

    // 删除设备缓存的方法（用于会话断开时清理）
    public static void removeGatewayIdToRegistry(String gatewayId) {
        // 查找并移除该gatewayId与 RegistryId的绑定关系
        String cacheGatewayId = GatewayRegistryMap.remove(gatewayId);
        if (cacheGatewayId != null) {
            System.out.println("gatewayId " + gatewayId + " 未成功移除");
        }
    };
    }
